package com.chengliang.bbs.entry;

import com.alibaba.fastjson.JSONObject;

import java.io.Serializable;
import java.util.HashMap;

public class JSONResult extends HashMap<String,Object> implements Serializable {

    /**
     * @param flag 操作是否成功标识
     * @return 自动判断数值 做出响应
     */
    public static JSONResult is(boolean flag){
        return flag?JSONResult.success():JSONResult.error();
    }

    /**
     * @param flag 操作是否成功标识
     * @param msg  描述信息 如： 注册用户
     * @return 自动判断数值 做出响应
     */
    public static JSONResult is(boolean flag,String msg){
        return flag?JSONResult.success(msg+"成功"):JSONResult.error(msg+"失败");
    }

    /**
     * json响应拓展参数方法
     * @param key key
     * @param value value数据
     * @return json对象
     */
    public JSONResult append(String key,Object value){
        this.put(key,value);
        return this;
    }

    public static JSONResult success(){
        return JSONResult.success("操作成功");
    }

    public static JSONResult success(String msg){
        return new JSONResult(0,msg,null);
    }

    public static JSONResult success(Object data){
        return new JSONResult(0,"操作成功",data);
    }

    public static JSONResult error(){
        return error("操作失败");
    }

    public static JSONResult error(String msg){
        return new JSONResult(500,msg,null);
    }

    public static JSONResult error(Object data){
        return new JSONResult(500,"操作失败",data);
    }

    private JSONResult(Integer code,String msg,Object data){
        put("code",code);
        put("msg",msg);
        put("data",data);
    }

    @Override
    public String toString() {
        return JSONObject.toJSONString(this);
    }
}
